From ce06043f17556d40b009628cf7c3bd51827ffa8b Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Thu, 21 Oct 2010 15:26:40 +0200 Subject: [PATCH] GdkWindow: Add gdk_window_set_background_rgba() This new function takes a GdkRGBA in order to set the background to an alpha color. Keep in mind that RGBA visuals and a composited environment are still necessary to have an alpha background displayed. --- docs/reference/gdk/gdk3-sections.txt | 1 + gdk/gdkwindow.c | 26 ++++++++++++++++++++++++++ gdk/gdkwindow.h | 2 ++ 3 files changed, 29 insertions(+) diff --git a/docs/reference/gdk/gdk3-sections.txt b/docs/reference/gdk/gdk3-sections.txt index db074de00a..40bcaaf67d 100644 --- a/docs/reference/gdk/gdk3-sections.txt +++ b/docs/reference/gdk/gdk3-sections.txt @@ -436,6 +436,7 @@ gdk_window_merge_child_input_shapes gdk_window_set_static_gravities gdk_window_set_title gdk_window_set_background +gdk_window_set_background_rgba gdk_window_set_background_pattern gdk_window_get_background_pattern GDK_PARENT_RELATIVE diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 9ff1934b39..d186b4dce5 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -6669,6 +6669,32 @@ gdk_window_set_background (GdkWindow *window, cairo_pattern_destroy (pattern); } +/** + * gdk_window_set_background_rgba: + * @window: a #GdkWindow + * @rgba: a #GdkRGBA color + * + * Sets the background color of @window. + * + * See also gdk_window_set_background_pattern(). + **/ +void +gdk_window_set_background_rgba (GdkWindow *window, + GdkRGBA *rgba) +{ + cairo_pattern_t *pattern; + + g_return_if_fail (GDK_IS_WINDOW (window)); + g_return_if_fail (rgba != NULL); + + pattern = cairo_pattern_create_rgba (rgba->red, rgba->green, + rgba->blue, rgba->alpha); + + gdk_window_set_background_pattern (window, pattern); + + cairo_pattern_destroy (pattern); +} + /** * gdk_window_set_background_pattern: * @window: a #GdkWindow diff --git a/gdk/gdkwindow.h b/gdk/gdkwindow.h index b7897ce55a..8a2fd4ba0e 100644 --- a/gdk/gdkwindow.h +++ b/gdk/gdkwindow.h @@ -697,6 +697,8 @@ void gdk_window_set_transient_for (GdkWindow *window, GdkWindow *parent); void gdk_window_set_background (GdkWindow *window, const GdkColor *color); +void gdk_window_set_background_rgba (GdkWindow *window, + GdkRGBA *rgba); void gdk_window_set_background_pattern (GdkWindow *window, cairo_pattern_t *pattern); cairo_pattern_t *gdk_window_get_background_pattern (GdkWindow *window); -- 2.30.2